package com.beauty.inventory.service;

import java.util.concurrent.TimeUnit;

/**
 * 缓存服务接口
 */
public interface CacheService {
    
    /**
     * 设置缓存
     * 
     * @param key 缓存键
     * @param value 缓存值
     * @param ttl 过期时间
     * @param unit 时间单位
     */
    <T> void set(String key, T value, long ttl, TimeUnit unit);
    
    /**
     * 设置缓存（默认1小时过期）
     * 
     * @param key 缓存键
     * @param value 缓存值
     */
    <T> void set(String key, T value);
    
    /**
     * 获取缓存
     * 
     * @param key 缓存键
     * @param clazz 值类型
     * @return 缓存值，如果不存在则返回null
     */
    <T> T get(String key, Class<T> clazz);
    
    /**
     * 删除缓存
     * 
     * @param key 缓存键
     * @return 是否删除成功
     */
    boolean delete(String key);
    
    /**
     * 判断缓存是否存在
     * 
     * @param key 缓存键
     * @return 是否存在
     */
    boolean exists(String key);
    
    /**
     * 设置过期时间
     * 
     * @param key 缓存键
     * @param ttl 过期时间
     * @param unit 时间单位
     * @return 是否设置成功
     */
    boolean expire(String key, long ttl, TimeUnit unit);
} 